home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 276-300 / 299 / rxil / src / to_rexx.c < prev   
C/C++ Source or Header  |  1995-03-14  |  2KB  |  91 lines

  1. /*   to_rexx.c    */
  2.  
  3. /*        Copyright © 1989 by Donald T. Meyer, Stormgate Software
  4.  *        All Rights Reserved
  5.  */
  6.  
  7.  
  8.  
  9. #include "rxil.h"
  10.  
  11.  
  12.  
  13. /* NAME
  14.  *        RxilToRexx
  15.  *
  16.  * SYNOPSIS
  17.  *        result = RxilToRexx( cmd, arg0, arg1, arg2, arg3 );
  18.  *
  19.  *        LONG result
  20.  *
  21.  *        ULONG cmd
  22.  *        STRPTR arg0
  23.  *        STRPTR arg1
  24.  *        STRPTR arg2
  25.  *        STRPTR arg3
  26.  *
  27.  * FUNCTION
  28.  *        Send a command packet to the Rexx Master.
  29.  *        This is an asynchronous send, no success or failure will be
  30.  *        observed.
  31.  *
  32.  * INPUTS
  33.  *        cmd = the command to send.
  34.  *        arg0 = a null-terminated string to convert into an Argstring.
  35.  *        arg1 = a null-terminated string to convert into an Argstring.
  36.  *        arg2 = a null-terminated string to convert into an Argstring.
  37.  *        arg3 = a null-terminated string to convert into an Argstring.
  38.  *
  39.  * RESULT
  40.  *        Zero for success, non-zero to indicate failure.
  41.  *
  42.  * SIDES
  43.  *
  44.  * HISTORY
  45.  *        01-Aug-89    Creation.
  46.  *
  47.  * BUGS
  48.  *
  49.  * SEE ALSO
  50.  *
  51.  */
  52.  
  53. LONG RxilToRexx( ULONG cmd,
  54.     STRPTR arg0, STRPTR arg1, STRPTR arg2, STRPTR arg3 )
  55. {
  56.     struct MsgPort *rmast = NULL;
  57.     struct RexxMsg *rexxmsg;
  58.  
  59.  
  60.     /* Allocate a packet to send to rexxmaster */
  61.     rexxmsg = CreateRexxMsg( NULL, NULL, NULL );
  62.     if( rexxmsg == NULL )
  63.     {
  64.         return( 1 );
  65.     }
  66.  
  67.     rexxmsg->rm_Action = cmd | RXFF_NONRET;
  68.  
  69.     rexxmsg->rm_Args[0] = arg0;
  70.     rexxmsg->rm_Args[1] = arg1;
  71.     rexxmsg->rm_Args[2] = arg2;
  72.     rexxmsg->rm_Args[3] = arg3;
  73.  
  74.     Forbid();
  75.     if(   (  rmast = FindPort( "REXX" )  ) != NULL   )
  76.     {
  77.         PutMsg( rmast, (struct Message *)rexxmsg );
  78.     }
  79.     Permit();
  80.  
  81.     if( rmast == NULL )
  82.     {
  83.         /* we could not find the REXX port, this failed! */
  84.         DeleteRexxMsg( rexxmsg );
  85.         return( 2 );
  86.     }
  87.  
  88.     return( 0 );
  89. }
  90.  
  91.